package com.ruoyi.central.utils.pojo;

import com.ruoyi.central.domain.TopCentralMaterial;
import com.ruoyi.central.enums.MaterialCreateTypeEnum;
import com.ruoyi.central.enums.MaterialStatusEnum;
import com.ruoyi.common.exception.base.service.ServiceException;
import com.ruoyi.common.utils.bean.EnumUtils;

import javax.validation.constraints.NotNull;

/**
 * @Classname MaterialUtils
 * @Author: sunluquan
 * @Date: 2022/6/16 10:39
 * @Description TODO
 * domian下 物料对象的工具类
 */
public class MaterialUtils {

    /**
     * 检测当前 物料对象的物料状态是否 与 源物料状态 相等
     * @param material 检测的物料对象
     * @param sourceMaterialStatus 源物料状态
     */
    public static void checkMaterialStatus(@NotNull TopCentralMaterial material,@NotNull MaterialStatusEnum sourceMaterialStatus){

        String materialNo = material.getId();

        if(!EnumUtils.equals(sourceMaterialStatus,material.getMaterialStatus())){
            throw new ServiceException("当前物料编号：{} ， 物料标记状态：'{}' 不能进行操作！",materialNo,EnumUtils.toEnum(MaterialStatusEnum.class,material.getMaterialStatus()).getDescription());
        }

    }

    /**
     * 构建父类物料对象
     * @param dataTemplate 数据模板
     */
    public static void buildMaterialForParent(TopCentralMaterial dataTemplate) {

        TopCentralMaterial parentMaterialOfInsert = new TopCentralMaterial();

        parentMaterialOfInsert.setCreateType(MaterialCreateTypeEnum.AUTOMATIC__CREATE_TYPE.getValue());
        parentMaterialOfInsert.setMaterialStatus(MaterialStatusEnum.FREE_OF_STATUS.getValue());
        parentMaterialOfInsert.setArtProcessId(null);
        parentMaterialOfInsert.setParentTypeId(null);
        parentMaterialOfInsert.setOperationStationId(null);
        parentMaterialOfInsert.setBatchNo(dataTemplate.getBatchNo());
        parentMaterialOfInsert.setId(null);

    }
}
